/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.facturacion.modelo;

import bs.entidad.modelo.DireccionEntregaEntidad;
import bs.entidad.modelo.EntidadComercial;
import bs.global.auditoria.IAuditableEntity;
import bs.global.modelo.Auditoria;
import bs.global.modelo.CodigoPostal;
import bs.global.modelo.Comprobante;
import bs.global.modelo.CondicionDeIva;
import bs.global.modelo.Formulario;
import bs.global.modelo.Moneda;
import bs.global.modelo.Provincia;
import bs.global.modelo.Sucursal;
import bs.global.modelo.TipoDocumento;
import bs.global.modelo.Transporte;
import bs.stock.modelo.ComprobanteStock;
import bs.stock.modelo.Deposito;
import bs.stock.modelo.MovimientoStock;
import bs.tesoreria.modelo.ComprobanteTesoreria;
import bs.tesoreria.modelo.MovimientoTesoreria;
import bs.ventas.modelo.ComprobanteVenta;
import bs.ventas.modelo.CondicionDePagoVenta;
import bs.ventas.modelo.ListaDePrecio;
import bs.ventas.modelo.MovimientoVenta;
import bs.ventas.modelo.Vendedor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;


/**
 *
 * @author ctrosch
 */
@Entity
@Table(name = "fc_movimiento")
public class MovimientoFacturacion implements Serializable, IAuditableEntity {

    private static final long serialVersionUID = 1L;
            
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)    
    @Column(name = "ID", nullable = false)
    private Integer id;
    
    @JoinColumns({
    @JoinColumn(name = "CIRCOM", referencedColumnName = "CIRCOM", nullable = false),
    @JoinColumn(name = "CIRAPL", referencedColumnName = "CIRAPL", nullable = false)
    })
    @ManyToOne(fetch = FetchType.LAZY)
    CircuitoFacturacion circuito;
    
//    //Circuito inicio    
//    @JoinColumn(name = "CIRINI", referencedColumnName = "CODIGO")
//    @ManyToOne(fetch = FetchType.LAZY)
//    private CodigoCircuitoFacturacion circuitoInicio;
    
    //Comprobante de Facturacion
    @JoinColumns({
    @JoinColumn(name = "MODCOM", referencedColumnName = "MODCOM", nullable = false),
    @JoinColumn(name = "CODCOM", referencedColumnName = "CODCOM", nullable = false)
    })
    @ManyToOne(fetch = FetchType.LAZY)
    Comprobante comprobante;
    
    //Comprobante de Facturacion original
    @JoinColumns({
    @JoinColumn(name = "COMORI", referencedColumnName = "MODCOM", nullable = false),
    @JoinColumn(name = "CODORI", referencedColumnName = "CODCOM", nullable = false)
    })
    @ManyToOne(fetch = FetchType.LAZY)
    Comprobante comprobanteOriginal;
        
    @JoinColumns({
    @JoinColumn(name = "MODFOR", referencedColumnName = "MODFOR", nullable = false),
    @JoinColumn(name = "CODFOR", referencedColumnName = "CODFOR", nullable = false)
    })
    @ManyToOne(fetch = FetchType.LAZY)
    Formulario formulario;
    
    @Column(name = "NROFOR", nullable = false)
    private int numeroFormulario;
    
    //Sucursal o punto de venta
    @JoinColumn(name = "SUCURS", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Sucursal sucursal;

    //Fecha de movimiento
    @Basic(optional = false)
    @Column(name = "FCHMOV", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date fechaMovimiento;
    
    @OneToOne(fetch = FetchType.LAZY, cascade =  CascadeType.ALL)
    @JoinColumn(name = "ID_MVT", referencedColumnName = "ID")        
    MovimientoVenta movimientoVenta;
    
    @OneToOne(fetch = FetchType.LAZY, cascade =  CascadeType.ALL)
    @JoinColumn(name = "ID_MCJ", referencedColumnName = "ID")        
    MovimientoTesoreria movimientoTesoreria;
    
    //@OneToOne(fetch = FetchType.LAZY, cascade =  CascadeType.ALL)
    //@JoinColumn(name = "ID_MST", referencedColumnName = "ID")        
    @Transient
    MovimientoStock movimientoStock;
    
    //EntidadComercial
    @JoinColumn(name = "NROCTA", referencedColumnName = "NROCTA", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private EntidadComercial cliente;
    
    //EntidadComercial
    @JoinColumn(name = "NROSUB", referencedColumnName = "NROCTA", nullable = true)
    @ManyToOne(fetch = FetchType.LAZY)
    private EntidadComercial clienteCuentaCorriente;
    
    @JoinColumn(name = "TIPDOC", referencedColumnName = "CODIGO", nullable = false)    
    @ManyToOne(fetch = FetchType.LAZY)
    private TipoDocumento tipoDocumento;
    
    @Column(name = "NRODOC", length = 50)
    private String nrodoc;
    
    //Direccion de entrega    
    @JoinColumns({
        @JoinColumn(name = "CODENT", referencedColumnName = "CODIGO", nullable = false),
        @JoinColumn(name = "CTAENT", referencedColumnName = "NROCTA", nullable = false, insertable=false, updatable=false)
    })
    @ManyToOne(fetch = FetchType.LAZY)
    private DireccionEntregaEntidad direccionEntrega;
    
    @JoinColumns({
        @JoinColumn(name = "CODPRO", referencedColumnName = "CODIGO", nullable = false),
        @JoinColumn(name = "CODPAI", referencedColumnName = "CODPAI", nullable = false)
    })
    @ManyToOne(fetch = FetchType.LAZY)
    private Provincia provincia;
    
    //Codigo postal entrega    
    @JoinColumn(name = "CODPOS", referencedColumnName = "ID", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private CodigoPostal codigoPostal;

    //Transportista
    @JoinColumn(name = "CODTRA", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Transporte transporte;
            
    @JoinColumn(name = "CTATRA", referencedColumnName = "NROCTA", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private EntidadComercial entidadTransporte;
    
    @Column(name = "DIRECC", length = 60)
    private String direccion;    
    @Column(name = "NUMERO", length = 20)
    private String numero;        
    @Column(name = "DPPISO", length = 6)
    private String departamentoPiso;
    @Column(name = "DEPTOS", length = 6)
    private String departamentoNumero;    
    @Column(name = "BARRIO", length = 6)
    private String barrio;        
    @Column(name = "DIAENT")
    private Short dias;
    @Column(name = "HORENT", length = 60)
    private String hora;
    @Column(name = "CONTAC", length = 60)
    private String contacto;
    @Column(name = "TELEFN", length = 30)
    private String telefono;

    //VT_Vendedor
    @JoinColumn(name = "VNDDOR", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Vendedor vendedor;

    //Condicion de pago
    @JoinColumn(name = "CNDPAG", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private CondicionDePagoVenta condicionDePago;
    
    @JoinColumn(name = "DEPING", referencedColumnName = "CODIGO", nullable = true)
    @ManyToOne(fetch = FetchType.LAZY)
    private Deposito depositoIngreso;
    
    
    @JoinColumn(name = "DEPEGR", referencedColumnName = "CODIGO", nullable = true)
    @ManyToOne(fetch = FetchType.LAZY)
    private Deposito depositoEgreso;

    //Lista de precio
    @JoinColumn(name = "CODLIS", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private ListaDePrecio listaDePrecio;
    
    //Moneda lista de precios
    @JoinColumn(name = "COFLIS", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Moneda monedaListaPrecio;

    //Moneda secundaria
    @JoinColumn(name = "COFSEC", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Moneda monedaSecundaria;
        
    @Column(name = "COTIZA", precision = 15, scale = 4)
    private BigDecimal cotizacion;

    //Congela precio
    @Column(name = "CONGEL", length = 1)
    private String congelaPrecio;

    //Observaciones
    @Lob
    @Column(name = "OBSERV", length = 2147483647)
    private String observaciones;   

    //Condicion de iva
    @JoinColumn(name = "CNDIVA", referencedColumnName = "CODIGO", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private CondicionDeIva condicionDeIva;

    //Congela bonificacion
    @Column(name = "CONBON", length = 1)
    private String congelaBonificacion;

    //Estado de autorizacion
    @Column(name = "ESTAUT")
    private int estadoAutorizacion;

    //Usuario de autorizaicon
    @Column(name = "USRAUT", length = 36)
    private String usuarioAutorizacion;

    //Fecha de autorizacion
    @Column(name = "FCHAUT")
    @Temporal(TemporalType.DATE)
    private Date fechaAutorizacion;

    //Fecha para calculo de vencimiento
    @Column(name = "FCHVEN")
    @Temporal(TemporalType.DATE)
    private Date fechaVencimiento;

    @Column(name = "PCTFIN", precision = 15, scale = 4)
    private BigDecimal porcentajeFinanciacion;
    @Column(name = "TASAIN", precision = 15, scale = 4)
    private BigDecimal tasaInteres;

    @Column(name = "PCTBF1", precision = 15, scale = 4)
    private BigDecimal porcentajeBonificacion1;
    @Column(name = "PCTBF2", precision = 15, scale = 4)
    private BigDecimal porcentajeBonificacion2;
    @Column(name = "PCTBF3", precision = 15, scale = 4)
    private BigDecimal porcentajeBonificacion3;    

    @Column(name = "TIPEXP", length = 6)
    private String tipoExportacion;

    @OneToMany(mappedBy = "movimiento", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    private List<ItemProductoFacturacion> itemsProducto;

    @OneToMany(mappedBy = "movimiento", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    private List<ItemAplicacionFacturacion> itemsAplicacion;

    @OneToMany(mappedBy = "movimiento", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    private List<ItemAnulacionFacturacion> itemsAnulacion;

    @Embedded
    private Auditoria auditoria;

    @Transient
    private BigDecimal subTotalConIVA;
    @Transient
    private BigDecimal subTotalPendienteConIVA;
    @Transient
    private int cantidadItems;

    @Transient
    private boolean persistido;
    
    
    @Transient
    private ComprobanteVenta comprobanteVenta;
    @Transient
    private ComprobanteTesoreria comprobanteTesoreria;
    @Transient
    private ComprobanteStock comprobanteStock;
    
    @Transient
    BigDecimal impGravado0000 = BigDecimal.ZERO;
    @Transient
    BigDecimal impGravado2100 = BigDecimal.ZERO;
    @Transient
    BigDecimal impGravado1050 = BigDecimal.ZERO;
    @Transient
    BigDecimal impGravado2700 = BigDecimal.ZERO;
    @Transient
    BigDecimal impIva2100 = BigDecimal.ZERO;;
    @Transient
    BigDecimal impIva1050 = BigDecimal.ZERO;;
    @Transient
    BigDecimal impIva2700 = BigDecimal.ZERO;;
    @Transient
    BigDecimal impBruto     = BigDecimal.ZERO;
    @Transient
    BigDecimal importeTotal = BigDecimal.ZERO;    
    
    

    public MovimientoFacturacion() {
        
        auditoria = new Auditoria();
        this.cotizacion = BigDecimal.ONE;
                
        itemsProducto = new ArrayList<ItemProductoFacturacion>();
        itemsAplicacion = new ArrayList<ItemAplicacionFacturacion>();
        itemsAnulacion =  new ArrayList<ItemAnulacionFacturacion>();
    }

    public MovimientoFacturacion(Integer id) {

        this.id = id;                
        auditoria = new Auditoria();
        this.cotizacion = BigDecimal.ONE;
               
        itemsProducto = new ArrayList<ItemProductoFacturacion>();
        itemsAplicacion = new ArrayList<ItemAplicacionFacturacion>();
        itemsAnulacion =  new ArrayList<ItemAnulacionFacturacion>();
    }

    public MovimientoFacturacion(Formulario formulario) {
       
        this.numeroFormulario = formulario.getUltimoNumero();
        this.formulario = formulario;
        this.sucursal = formulario.getSucursal();
        this.cotizacion = BigDecimal.ONE;
        
        auditoria = new Auditoria();
                
        itemsProducto = new ArrayList<ItemProductoFacturacion>();
        itemsAplicacion = new ArrayList<ItemAplicacionFacturacion>();
        itemsAnulacion =  new ArrayList<ItemAnulacionFacturacion>();
    }

    public Formulario getFormulario() {
        return formulario;
    }

    public void setFormulario(Formulario formulario) {
        this.formulario = formulario;
    }   

    public CircuitoFacturacion getCircuito() {
        return circuito;
    }

    public void setCircuito(CircuitoFacturacion circuito) {
        this.circuito = circuito;
    }

    public Comprobante getComprobante() {
        return comprobante;
    }

    public void setComprobante(Comprobante comprobante) {
        this.comprobante = comprobante;
    }

    public EntidadComercial getCliente() {
        return cliente;
    }

    public void setCliente(EntidadComercial cliente) {
        this.cliente = cliente;
    }

    public CondicionDePagoVenta getCondicionDePago() {
        return condicionDePago;
    }

    public void setCondicionDePago(CondicionDePagoVenta condicionDePago) {
        this.condicionDePago = condicionDePago;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNrodoc() {
        return nrodoc;
    }

    public void setNrodoc(String nrodoc) {
        this.nrodoc = nrodoc;
    }

    public TipoDocumento getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(TipoDocumento tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }
//
//    public CodigoCircuitoFacturacion getCircuitoInicio() {
//        return circuitoInicio;
//    }
//
//    public void setCircuitoInicio(CodigoCircuitoFacturacion circuitoInicio) {
//        this.circuitoInicio = circuitoInicio;
//    }

    public Comprobante getComprobanteOriginal() {
        return comprobanteOriginal;
    }

    public void setComprobanteOriginal(Comprobante comprobanteOriginal) {
        this.comprobanteOriginal = comprobanteOriginal;
    }

    public int getNumeroFormulario() {
        return numeroFormulario;
    }

    public void setNumeroFormulario(int numeroFormulario) {
        this.numeroFormulario = numeroFormulario;
    }

    public Sucursal getSucursal() {
        return sucursal;
    }

    public void setSucursal(Sucursal sucursal) {
        this.sucursal = sucursal;
    }

    public Date getFechaMovimiento() {
        return fechaMovimiento;
    }

    public void setFechaMovimiento(Date fechaMovimiento) {
        this.fechaMovimiento = fechaMovimiento;
    }

    public Vendedor getVendedor() {
        return vendedor;
    }

    public void setVendedor(Vendedor vendedor) {
        this.vendedor = vendedor;
    }    
    
    public ListaDePrecio getListaDePrecio() {
        return listaDePrecio;
    }

    public Deposito getDepositoIngreso() {
        return depositoIngreso;
    }

    public void setDepositoIngreso(Deposito depositoIngreso) {
        this.depositoIngreso = depositoIngreso;
    }

    public Deposito getDepositoEgreso() {
        return depositoEgreso;
    }

    public void setDepositoEgreso(Deposito depositoEgreso) {
        this.depositoEgreso = depositoEgreso;
    }

    public void setListaDePrecio(ListaDePrecio listaDePrecio) {
        this.listaDePrecio = listaDePrecio;
    }

    public String getCongelaPrecio() {
        return congelaPrecio;
    }

    public void setCongelaPrecio(String congelaPrecio) {
        this.congelaPrecio = congelaPrecio;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public Moneda getMonedaListaPrecio() {
        return monedaListaPrecio;
    }

    public void setMonedaListaPrecio(Moneda monedaListaPrecio) {
        this.monedaListaPrecio = monedaListaPrecio;
    }

    public Moneda getMonedaSecundaria() {
        return monedaSecundaria;
    }

    public void setMonedaSecundaria(Moneda monedaSecundaria) {
        this.monedaSecundaria = monedaSecundaria;
    }

    public BigDecimal getCotizacion() {
        return cotizacion;
    }

    public void setCotizacion(BigDecimal cotizacion) {
        this.cotizacion = cotizacion;
    }

    public CondicionDeIva getCondicionDeIva() {
        return condicionDeIva;
    }

    public void setCondicionDeIva(CondicionDeIva condicionDeIva) {
        this.condicionDeIva = condicionDeIva;
    }

    public String getCongelaBonificacion() {
        return congelaBonificacion;
    }

    public void setCongelaBonificacion(String congelaBonificacion) {
        this.congelaBonificacion = congelaBonificacion;
    }

    public int getEstadoAutorizacion() {
        return estadoAutorizacion;
    }

    public void setEstadoAutorizacion(int estadoAutorizacion) {
        this.estadoAutorizacion = estadoAutorizacion;
    }
    
    public String getUsuarioAutorizacion() {
        return usuarioAutorizacion;
    }

    public void setUsuarioAutorizacion(String usuarioAutorizacion) {
        this.usuarioAutorizacion = usuarioAutorizacion;
    }

    public Date getFechaAutorizacion() {
        return fechaAutorizacion;
    }

    public void setFechaAutorizacion(Date fechaAutorizacion) {
        this.fechaAutorizacion = fechaAutorizacion;
    }

    public Date getFechaVencimiento() {
        return fechaVencimiento;
    }

    public void setFechaVencimiento(Date fechaVencimiento) {
        this.fechaVencimiento = fechaVencimiento;
    }

    public BigDecimal getPorcentajeFinanciacion() {
        return porcentajeFinanciacion;
    }

    public void setPorcentajeFinanciacion(BigDecimal porcentajeFinanciacion) {
        this.porcentajeFinanciacion = porcentajeFinanciacion;
    }

    public BigDecimal getTasaInteres() {
        return tasaInteres;
    }

    public void setTasaInteres(BigDecimal tasaInteres) {
        this.tasaInteres = tasaInteres;
    }

    public BigDecimal getPorcentajeBonificacion1() {
        return porcentajeBonificacion1;
    }

    public void setPorcentajeBonificacion1(BigDecimal porcentajeBonificacion1) {
        this.porcentajeBonificacion1 = porcentajeBonificacion1;
    }

    public BigDecimal getPorcentajeBonificacion2() {
        return porcentajeBonificacion2;
    }

    public void setPorcentajeBonificacion2(BigDecimal porcentajeBonificacion2) {
        this.porcentajeBonificacion2 = porcentajeBonificacion2;
    }

    public BigDecimal getPorcentajeBonificacion3() {
        return porcentajeBonificacion3;
    }

    public void setPorcentajeBonificacion3(BigDecimal porcentajeBonificacion3) {
        this.porcentajeBonificacion3 = porcentajeBonificacion3;
    }

    public String getTipoExportacion() {
        return tipoExportacion;
    }

    public void setTipoExportacion(String tipoExportacion) {
        this.tipoExportacion = tipoExportacion;
    }

    public List<ItemProductoFacturacion> getItemsProducto() {
        return itemsProducto;
    }

    public void setItemsProducto(List<ItemProductoFacturacion> itemsProducto) {
        this.itemsProducto = itemsProducto;
    }

    public List<ItemAplicacionFacturacion> getItemsAplicacion() {
        return itemsAplicacion;
    }

    public void setItemsAplicacion(List<ItemAplicacionFacturacion> itemsAplicacion) {
        this.itemsAplicacion = itemsAplicacion;
    }

    public EntidadComercial getClienteCuentaCorriente() {
        return clienteCuentaCorriente;
    }

    public void setClienteCuentaCorriente(EntidadComercial clienteCuentaCorriente) {
        this.clienteCuentaCorriente = clienteCuentaCorriente;
    }
    
    public List<ItemAnulacionFacturacion> getItemsAnulacion() {
        return itemsAnulacion;
    }

    public void setItemsAnulacion(List<ItemAnulacionFacturacion> itemsAnulacion) {
        this.itemsAnulacion = itemsAnulacion;
    }

    public Auditoria getAuditoria() {
        return auditoria;
    }

    public void setAuditoria(Auditoria auditoria) {
        this.auditoria = auditoria;
    }

    public BigDecimal getSubTotalConIVA() {
        return subTotalConIVA;
    }

    public void setSubTotalConIVA(BigDecimal subTotalConIVA) {
        this.subTotalConIVA = subTotalConIVA;
    }

    public BigDecimal getSubTotalPendienteConIVA() {
        return subTotalPendienteConIVA;
    }

    public void setSubTotalPendienteConIVA(BigDecimal subTotalPendienteConIVA) {
        this.subTotalPendienteConIVA = subTotalPendienteConIVA;
    }

    public int getCantidadItems() {
        return cantidadItems;
    }

    public void setCantidadItems(int cantidadItems) {
        this.cantidadItems = cantidadItems;
    }

    public boolean isPersistido() {
        return persistido;
    }

    public void setPersistido(boolean persistido) {
        this.persistido = persistido;
    }

    public MovimientoVenta getMovimientoVenta() {
        return movimientoVenta;
    }

    public void setMovimientoVenta(MovimientoVenta movimientoVenta) {
        this.movimientoVenta = movimientoVenta;
    }

    public MovimientoTesoreria getMovimientoTesoreria() {
        return movimientoTesoreria;
    }

    public void setMovimientoTesoreria(MovimientoTesoreria movimientoTesoreria) {
        this.movimientoTesoreria = movimientoTesoreria;
    }

    public MovimientoStock getMovimientoStock() {
        return movimientoStock;
    }

    public void setMovimientoStock(MovimientoStock movimientoStock) {
        this.movimientoStock = movimientoStock;
    }
    
    

    public DireccionEntregaEntidad getDireccionEntrega() {
        return direccionEntrega;
    }

    public void setDireccionEntrega(DireccionEntregaEntidad direccionEntrega) {
        this.direccionEntrega = direccionEntrega;
    }

    public Transporte getTransporte() {
        return transporte;
    }

    public void setTransporte(Transporte transporte) {
        this.transporte = transporte;
    }

    public CodigoPostal getCodigoPostal() {
        return codigoPostal;
    }

    public void setCodigoPostal(CodigoPostal codigoPostal) {
        this.codigoPostal = codigoPostal;
    }

    public EntidadComercial getEntidadTransporte() {
        return entidadTransporte;
    }

    public void setEntidadTransporte(EntidadComercial entidadTransporte) {
        this.entidadTransporte = entidadTransporte;
    }
    
    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getDepartamentoPiso() {
        return departamentoPiso;
    }

    public void setDepartamentoPiso(String departamentoPiso) {
        this.departamentoPiso = departamentoPiso;
    }

    public String getDepartamentoNumero() {
        return departamentoNumero;
    }

    public void setDepartamentoNumero(String departamentoNumero) {
        this.departamentoNumero = departamentoNumero;
    }

    public String getBarrio() {
        return barrio;
    }

    public void setBarrio(String barrio) {
        this.barrio = barrio;
    }

    public Short getDias() {
        return dias;
    }

    public void setDias(Short dias) {
        this.dias = dias;
    }

    public String getHora() {
        return hora;
    }

    public void setHora(String hora) {
        this.hora = hora;
    }

    public String getContacto() {
        return contacto;
    }

    public void setContacto(String contacto) {
        this.contacto = contacto;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public void setProvincia(Provincia provincia) {
        this.provincia = provincia;
    }

    public ComprobanteVenta getComprobanteVenta() {
        return comprobanteVenta;
    }

    public void setComprobanteVenta(ComprobanteVenta comprobanteVenta) {
        this.comprobanteVenta = comprobanteVenta;
    }

    public ComprobanteTesoreria getComprobanteTesoreria() {
        return comprobanteTesoreria;
    }

    public void setComprobanteTesoreria(ComprobanteTesoreria comprobanteTesoreria) {
        this.comprobanteTesoreria = comprobanteTesoreria;
    }

    public ComprobanteStock getComprobanteStock() {
        return comprobanteStock;
    }

    public void setComprobanteStock(ComprobanteStock comprobanteStock) {
        this.comprobanteStock = comprobanteStock;
    }

    public BigDecimal getImpGravado0000() {
        return impGravado0000;
    }

    public void setImpGravado0000(BigDecimal impGravado0000) {
        this.impGravado0000 = impGravado0000;
    }

    public BigDecimal getImpGravado2100() {
        return impGravado2100;
    }

    public void setImpGravado2100(BigDecimal impGravado2100) {
        this.impGravado2100 = impGravado2100;
    }

    public BigDecimal getImpGravado1050() {
        return impGravado1050;
    }

    public void setImpGravado1050(BigDecimal impGravado1050) {
        this.impGravado1050 = impGravado1050;
    }

    public BigDecimal getImpGravado2700() {
        return impGravado2700;
    }

    public void setImpGravado2700(BigDecimal impGravado2700) {
        this.impGravado2700 = impGravado2700;
    }

    public BigDecimal getImpIva2100() {
        return impIva2100;
    }

    public void setImpIva2100(BigDecimal impIva2100) {
        this.impIva2100 = impIva2100;
    }

    public BigDecimal getImpIva1050() {
        return impIva1050;
    }

    public void setImpIva1050(BigDecimal impIva1050) {
        this.impIva1050 = impIva1050;
    }

    public BigDecimal getImpIva2700() {
        return impIva2700;
    }

    public void setImpIva2700(BigDecimal impIva2700) {
        this.impIva2700 = impIva2700;
    }

    public BigDecimal getImpBruto() {
        return impBruto;
    }

    public void setImpBruto(BigDecimal impBruto) {
        this.impBruto = impBruto;
    }

    public BigDecimal getImporteTotal() {
        return importeTotal;
    }

    public void setImporteTotal(BigDecimal importeTotal) {
        this.importeTotal = importeTotal;
    }
    
    
    
    
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + (this.id != null ? this.id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final MovimientoFacturacion other = (MovimientoFacturacion) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "MovimientoFacturacion{" + "id=" + id + '}';
    }
}
